package com.learn.springbootnetty.udpdemo;


import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Objects;
import java.util.Scanner;

/**
 * UDP如何实现广播
 * 使用广播地址：255.255.255.255
 *
 * 具体操作
 * 1.发送端发送的数据包的目的地写的是广播地址、且指定端口;
 * 2.本机所在网段的其他主机的程序只要注册对应端口即可;
 *
 * 发送端代码示例
 */
public class GuangboSendMessageDemo {
    public static void main(String[] args) throws Exception {
        /*
           按照下面的要求实现程序
               UDP发送数据:数据来自于键盘录入,直到输入的数据是886,发送数据结束
               UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收
         */

        // 1.创建发送端的DatagramSocket对象
        // 细节:在创建DatagramSocket对象的时候,它会去绑定对应的端口,在以后我们就是通过这个端口往外发送数据
        DatagramSocket ds = new DatagramSocket();

        // 2.打包数据
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请输入您要说的话:");
            String str = sc.nextLine();
            if(Objects.equals("886",str)){
                System.out.println("离线成功!");
                ds.close();
                break;
            }
            byte[] bytes = str.getBytes();
            // 要发给哪台电脑的哪个端口
            // 获取InetAddress的对象,表示IP的对象（广播设置 255.255.255.255）
            InetAddress address = InetAddress.getByName("255.255.255.255");
            // 指定端口号
            int port = 2003;
            DatagramPacket dp = new DatagramPacket(bytes,bytes.length,address,port);

            // 3.发送数据
            ds.send(dp);
        }
        // 4.释放资源
        ds.close();
    }
}